Systems and methods for content server rendezvous in a dual stack protocol network

ABSTRACT

Implementations described and claimed herein provide systems and methods for serving content over a network. In one implementation, a method of serving content is provided. The method includes maintaining a first address record associated with serving a resource and a second address record associated with serving the same resource. The first address record is further associated with a first protocol for a first device capable of serving the resource. Similarly, the second address record is associated with a second protocol, different from the first protocol, for a second device, distinct from the first device, capable of serving the resource. The method further includes providing, in response to at least one resolution request for the resource, the first address record and the second address record.

CROSS-REFERENCE TO RELATED APPLICATION

This application is related to and claims priority under 35 U.S.C.§119(e) from U.S. Patent Application No. 62/298,577, filed Feb. 23,2016, titled “SYSTEM AND METHOD FOR CONTENT SERVER RENDEZVOUS IN A DUALSTACK PROTOCOL NETWORK,” the entire contents of which are incorporatedherein by reference for all purposes.

TECHNICAL FIELD

Aspects of the present disclosure involve content distribution, and moreparticularly involve optimizing content delivery from various possiblecontent servers, which may be in a content distribution network.

BACKGROUND

Historically, Internet traffic has been routed across the Internet usingthe Internet Protocol version 4 (IPv4) protocol. IPv4 uses 32 bits todescribe the address of a target device for routing packets of data toflow to that target device. As the Internet and the number of devicesexpanded, the inherent limit of 32 bits to provide sufficient uniqueaddresses inspired the creation of the Internet Protocol version 6(IPv6) protocol, which uses 128 bits for addressing and has beendeployed in parallel with IPv6 since 2006. Nonetheless, a significantamount of Internet traffic and devices still use IPv4.

Given the ability to send and receive information using the twodifferent protocols, many devices are configured to communicate usingeither protocol, commonly referred to as being “dual stacked”. In manyinstances, however, communication over one protocol works better thancommunication over the other protocol. Such discrepancies may be due toa network or device being optimized or otherwise better developed forone protocol or the other. For example, during the initial release ofIPv6, many networks included bugs and inefficiencies with respect totransporting IPv6 traffic. Thus, many conventional networks, includingcable networks, are dual stacked to allow devices to communicate overIPv4 when doing so over IPv6 is unavailable or otherwise inefficient. Inthat regard, the “Happy Eyeballs” algorithm has been developed toprovide an automatic way for devices to switch from IPv6 communicationto IPv4 communication, or possibly vice-versa, when one protocol or theother works more effectively.

It is with these observations in mind, among others, that aspects of thepresent disclosure were conceived.

SUMMARY

Implementations described and claimed herein address the foregoingproblems, among others, by providing systems and methods for obtainingand providing content in a dual stacked network environment. In oneimplementation, a method of serving content is provided. The methodincludes maintaining a first address record associated with serving aresource and a second address record associated with serving the sameresource. The first address record is further associated with a firstprotocol for a first device capable of serving the resource. Similarly,the second address record is associated with a second protocol,different from the first protocol, for a second device, distinct fromthe first device, capable of serving the resource. The method furtherincludes providing, in response to at least one resolution request forthe resource, the first address record and the second address record.

In another implementation, a method of obtaining content is provided.The method includes obtaining, in response to a resolution request for aresource, a first network record and a second network record. The firstnetwork record is associated with a first protocol for a first devicecapable of serving the resource and the second network record isassociated with a second protocol, distinct from the first protocol fora second device capable of serving the resource. The method furtherincludes obtaining performance information pertaining to a performanceof obtaining the resource from the first device and a performance ofobtaining the resource from the second device. Based on the performanceinformation, a request is made for the resource from the first deviceusing the first protocol or the second device using the second protocol.

Other implementations are also described and recited herein. Further,while multiple implementations are disclosed, still otherimplementations of the presently disclosed technology will becomeapparent to those skilled in the art from the following detaileddescription, which shows and describes illustrative implementations ofthe presently disclosed technology. As will be realized, the presentlydisclosed technology is capable of modifications in various aspects, allwithout departing from the spirit and scope of the presently disclosedtechnology. Accordingly, the drawings and detailed description are to beregarded as illustrative in nature and not limiting.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other objects, features, and advantages of the presentdisclosure set forth herein will be apparent from the followingdescription of particular embodiments of those inventive concepts, asillustrated in the accompanying drawings. It should be noted that thedrawings are not necessarily to scale; however the emphasis instead isbeing placed on illustrating the principles of the inventive concepts.Also, in the drawings the like reference characters may refer to thesame parts or similar throughout the different views. It is intendedthat the embodiments and figures disclosed herein are to be consideredillustrative rather than limiting.

FIG. 1 shows an example system for obtaining and providing content.

FIG. 2 is a flowchart of a method, or combination of methods, forobtaining and using records (e.g., A and AAAA records for IPv4 and IPv6)to assess the performance of obtaining content from different devicesassociated with each record, and connecting with the optimallyperforming device to request a resource.

FIG. 3 is an example computing system that may implement various systemsand methods of the presently disclosed technology.

DETAILED DESCRIPTION

Aspects of the present disclosure involve system and methods forobtaining and providing content over a network implementing at least twocommunications protocols, such as a dual stack network. In oneimplementation, a domain name system (DNS) is operatively coupled to anetwork including two or more devices configured to serve a resourceusing different protocols. In response to receiving a request for theresource from a client, the DNS provides address records correspondingto each of the devices. The client device then obtains and analyzesperformance information pertaining to obtaining the resource from thedevices using the different protocols. Based on the outcome of theanalysis, the client device determines from which of the devices torequest the resource.

In one embodiment, the DNS has records or access to records forobtaining resources from a Content Distribution Network (CDN) and thedevices correspond to nodes of the CDN. Generally, a CDN is adistributed system of servers deployed across a network to serve contentwith high performance and availability to IP addresses associated withend users. Content, also referred to herein as “resources”, served via aCDN may include web objects (e.g., text, graphics, or scripts),downloadable objects (e.g., media files, software, software patches, ordocuments), applications, streaming media (e.g., live or on-demand), andthe like. Content providers, such as media companies or vendors, maycontract with CDN operators to serve their content to their end users,and a CDN may utilize a primary network, such as a large InternetService Provider (ISP) or backbone provider, or other carriers ornetworks to host its servers. In the present disclosure, the DNS storesand provides address records corresponding to at least a first deviceconfigured to serve a resource using a first protocol, such as IPv4, anda second device configured to serve the same resource using a secondprotocol, such as IPv6. When a client device (also referred to herein asa “client”), or more often a resolver associated with a client, contactsthe DNS during the process of requesting content, the DNS provides eachof the address records to the client and the client determines which ofthe protocols is more effective in providing the content and requeststhe content accordingly. For example, in certain embodiments, the clientexecutes a Happy Eyeballs function to select between the networklocation associated with the IPv4 address and the IPv6 address.

In many instances, clients in disparate geographic areas share a commonresolver. The resolver is generally charged with receiving requests fromclient devices for resources and interacting with the DNS to obtain acorresponding IP address for any requested resource. For example,clients in Boston and clients in New York may share a resolver. Often,the DNS is aware primarily of the resolver and has little or noadditional information regarding the client devices behind the resolver,including the identities or locations of the client devices. CDNs, incontrast, are often configured, when possible, to deliver content fromthe most effective content devices for any particular client devicerequesting the content. Effectiveness in such situations may be based oncost, proximity (logical, geographical, or both), bandwidth, contract,load, and other factors. In a simple example, it may be more effectiveto serve content from a device in Boston to a Boston area client thanfrom a device in New York, in part because the server is geographicallycloser to the client and therefore content packets may traverse thenetwork more quickly as there is less distance to traverse, fewer hopsto make, and other factors. If the DNS, however, is not aware that therequesting client is in Boston as opposed to New York, the ability tochoose the more effective location for serving content is complicated.Accordingly, systems and methods according to the present disclosurerely on assigning an address corresponding to a first protocol, such asIPv4, to a first device (or set of devices) hosting a resource in afirst location and an address corresponding to a second protocol, suchas IPv6, to a second device (or set of devices) hosting the sameresource in a second location. As a result, a function for determiningthe most effective protocol to communicate with a dual stack device,such as a Happy Eyeballs function, can be appropriated and retasked toidentify the device to most effectively deliver the requested resource.

FIG. 1 is a simplified example network environment 100 for distributingcontent (also referred to herein as “network resources” or “resources”)to one or more users. In the example shown, a CDN 102 includes a firstCDN device 104 and a second CDN device 106. Although a CDN 102 isillustrated in FIG. 1, it should be appreciated that the embodiments ofthe present disclosure may be utilized in other network services. Thefirst CDN device 104 and the second CDN device 106 include CDN contentdistribution servers, such as CDN edge servers. Each of the first CDNdevice 104 and the second CDN device 106 may be further communicativelycoupled to a content origin server 116, within the CDN 102, in a contentprovider network 118 or otherwise, and configured to receive contentfrom the content origin server 116 to populate the edge server's storagefor effective content distribution.

The CDN 102 is communicably coupled to one or more client devices 108and a directory server 110, such as a Domain Name System (DNS) server.The CDN 102 is capable of providing content to the client device 108,which is generally any form of computing device, such as a personalcomputer, mobile device, tablet (e.g., iPad), or the like. The clientdevice 108 is configured to request, receive, process, and presentcontent received from the CDN 102.

One or both of the first CDN device 104 and the second CDN device 106may be edge servers, which may cache content or access cached contentfrom another server, such as the content origin server 116 or other edgeor mid-tier servers, to make it available in a more geographically orlogically proximate location to the client device 108. Edge servers mayreduce network loads, free capacity, lower delivery costs, and/or reducecontent download time. The first CDN device 104 and the second CDNdevice 106 may be configured to provide requested content to arequestor, such as the client device 108, via an intermediate device. Inone implementation, one or more of the first CDN device 104 and thesecond CDN device 106 provides the requested content from a respectivelocal cache. The local cache is generally a storage system that storescontent for delivery by one or more of the first CDN device 104 and thesecond CDN device 106. The local cache may be incorporated into one ormore of the first CDN device 104, the second CDN device 106, and anotherCDN device within the CDN 102 or may be a storage device incommunication with and accessible by one or more of the first CDN device104, the second CDN device 106, and other CDN devices within the CDN102. One or more of the first CDN device 104 and the second CDN device106 retrieves the requested content from another source, such as a mediaaccess server (MAS) (e.g., a content distribution server or a contentorigin server of a content provider network). The content is then servedto client device 108 in response to the requests.

Although the first CDN device 104 and the second CDN device 106 areshown as directly coupled to the client device 108, it should beappreciated that additional components may be, and in most cases are,disposed between the client device 108 and either of the first CDNdevice 104 and the second CDN device 106, including routers, switches,and other network elements as well as intermediate networks. In otherwords, the content requested and provided to the client device 108 maytake many routes from the CDN 102 and its components depending on whichcontent server is tasked with providing the content. Thus, although thisparticular disclosure utilizes the example of providing the content tothe client device 108 directly over the CDN 102 from the first CDNdevice 104 or the second CDN device 106, any number of intermediatedevices, networks, and connections to the CDN 102 may be utilized toreceive the requested content. Further, although discussed in relationto the CDN 102, similar methods and techniques discussed herein apply toother telecommunications networks, such as a network providingIP-related services to the client device 108.

In one implementation, the client device 108 includes an Internetbrowser application or other suitable application with which a link(e.g., a hyperlink) or form of content pointer to a resource or contentitem may be selected, entered, or otherwise invoked, causing a requestto be sent from the client device 108 to the directory server 110. Forexample, a user may wish to stream a movie on a computer or any othernumber of possible user devices, as described herein. To start themovie, a link to the movie in a website or other interface may beselected or otherwise activated. In some instances, the user may selecta displayed graphic of the movie, and that graphic is operablyassociated with the link that begins the process of obtaining the moviedata from the CDN 102. Selection of the link in some form causes arequest to be sent to the directory server 110 providing a DNS servicein the CDN 102. As described below in more detail, the directory server110 responds to the request by providing multiple network addresses(e.g., an IPv4 address and an IPv6 address) where the resourceassociated with the selected link can be obtained. In oneimplementation, the directory server 110 provides a DNS service, whichresolves an alphanumeric domain name to the IP addresses. Morespecifically, the directory server 110 resolves the link name (e.g., URLor other identifier) to an associated network address from which theclient device 108 can retrieve the requested resource.

The network environment 100 is generally configured to facilitatecommunication of data using multiple communication protocols. Componentsof the CDN 102 are further configured to communicate using one or moreof the multiple protocols supported by the network environment 100. Forexample, in the embodiment of FIG. 1, the network environment 100 is adual stack network configured to communicate using each of InternetProtocol version 4 (IPv4) and Internet Protocol version 4 (IPv6) and thefirst CDN device 104 and the second CDN device 106 are configured toprovide the same content to the client device 108 using IPv4 and IPv6,respectively. For simplicity, the following discussion regarding theoperation of the network environment 100 refers to communication usingIPv4 and IPv6 as only an example. In other embodiments, alternativecommunication protocols may be used.

During operation, the client device 108 submits a resolution request tothe directory server 110 for a resource available over the CDN 102 and,more specifically, for a resource available from each of the first CDNdevice 104 and the second CDN device 106. In response, the directoryserver 110 returns an IPv4 address corresponding to the first CDN device104 and an IPv6 address corresponding to the second CDN device 106. Thereturned addresses may be based on a single resolution request receivedfrom the client device 108 or may be based on separate requests. Forexample, the directory server 110 may automatically return an AAAArecord (for an IPv6 address) for records with both addresses even thoughthe client device 108 requested only an A record (for an IPv4 address).

In response to receiving the addresses from the directory server 110,the client device 108 tests the IPv4 and IPv6 addresses to ascertainresponsiveness. For example, in certain embodiments, the client device108 is configured to execute a Happy Eyeballs function that pings orotherwise tests the IPv4 address and the IPv6 address. Conventionally,Happy Eyeballs determines whether the network performance to obtaincontent from a given dual stack device is preferable under one of IPv4or IPv6. In a fully deployed and functioning network, round trip timefor both protocols should be roughly the same as the two addresses eachpoint to the same device and would traverse a similar path albeit underdifferent protocols. However, in embodiments of the present disclosure,devices for providing the requested content over different protocols arepurposefully in different locations. Accordingly, the Happy Eyeballsfunction, or a similar performance test, is leveraged to insteadascertain or rendezvous a request with the device and underlying networkmore suitable to serving the request as opposed to testing the efficacyof the alternative protocols. For example, the first CDN device 104,which communicates using IPv4, may be in a first location, such asBoston, while the second CDN device 106, which communicates using IPv6may be in a second location, such as New York. The initial performancetest will therefore assess the performance of the first CDN device 104and the second CDN device 106, along the with respective networkperformance between the devices and the requesting device, to assess themore effective location from which to serve the request. If the networkperformance and machine performance in both scenarios is roughlyequivalent, then the nearer server will provide the content moreeffectively simply due to proximity. For example, if the client device108 is located in the Boston area, the client device 108 will select theIPv4 address and request the content from the Boston based machine,i.e., the first CDN device 104.

In certain embodiments, the performance test defaults to preferring oneprotocol over another. For example, if the performance test producesresults for different protocols that are substantially equal or within aparticular threshold, the client device 108 may default to requestingcontent using a particular protocol. For example, IPv6 may be preferredif the round trip time over each of IPv6 and IPv4 is substantially thesame or within a predetermined margin. For example, if the round triptime between IPv4 and IPv6 differs by less than a predeterminedpercentage (e.g., 5%, 10%, 15%) or a predetermined period of time (e.g.,50 milliseconds, 100 milliseconds, 200 milliseconds), IPv6 may beautomatically selected. Alternatively, default functionality that may beincluded in a performance test implemented by the client device 108,such as Happy Eyeballs, may be disregarded or overwritten. For example,if the round trip time to an IPv4 machine is less than IPv6 but withinthe threshold that would conventionally select IPv6 using a conventionalHappy Eyeballs functions, client device 108 may instead select the IPv4device.

In certain embodiments, the directory server 110 may receive detailsregarding the client device 108 and may return particular addressrecords based on the information. For example, in the case of a CDN, thedirectory server 110 may be a CDN name server configured to return A andAAAA records for various requests based on characteristics of therequesting client, when known, including a location of the client. Inalternative embodiments, the directory server 110 may not receive orotherwise have access to specific information regarding the clientdevice 108, but may receive information corresponding to an intermediatedevice through which a resource request from the client device 108 iscommunicated. For example, the identity of an internet service provider(ISP) deploying a resolver of the directory server 110, the location ofthe resolver, general information about the geography of a group ofclients using the resolver, and other information may be known. Forexample, a customer of the CDN may have a resolver in New York thatserves clients in New York and Boston, and may also have a resolver inSan Diego that serves Southern California customers. The directoryserver 110 may thus have a first pair of records (Boston and New York)to return for a request originating from the New York resolver, and mayreturn one or more alternative records for a request form the San Diegoresolver. For example, in one embodiment, the CDN 102 includes CDNservers or devices in the Los Angeles metropolitan area and the SanDiego. Accordingly, when the directory server 110 receives a resolutionrequest originating from the San Diego resolver (as opposed to the NewYork resolver), the directory server 110 returns an A recordcorresponding to the Los Angeles CDN device and an AAAA record for theSan Diego CDN device.

The methodology set out herein is not limited to optimizing contentdelivery based on location, but may further take into account broadernetwork performance, alone or in combination. For example, while Bostonservers may be closer to Boston clients, New York servers and thenetwork pathway between the New York servers may be more effective(e.g., faster) in delivering content during periods when, for example,the Boston network is congested or Boston servers are malfunctioning oroverloaded. Congestion may be based on various metrics including,without limitation, network latency and network throughput. In suchsituations, the New York servers may be chosen over the Boston serversdue to the increased performance of the New York severs. Accordingly,while useful in selecting between CDN devices in different locations andacross different portions of a network to serve content, the methodologymay also be used in the context of selecting between CDN devices moregeographically proximate, (e.g., housed within the same data center),for the purpose of discriminating between CDN devices based on factorsincluding, without limitation, congestion, capacity, infrastructuredeployment, logical network arrangement, and connections to othernetworks.

The client device 108 typically executes a performance test and selectsamong CDN devices hosting a requested resource at the initiation of acommunication session. As a result, the selected CDN device is generallythe best device at the time of initiating the communication session.However, during the course of a session, events may occur such that thechosen CDN device is no longer able to provide the requested resourceefficiently or at all. For example, the chosen CDN device may fail, theconnection between the client device 108 and the chosen CDN device maybe interrupted, or network congestion may significantly increase. Whensuch events occur in certain implementations, the client device 108automatically switches to a different CDN device for which an addressrecord was received. In alternative implementations, the client device108 automatically executes a second performance test and selects a newCDN device based on the results of the second performance test. Ineither implementation, a new session is initiated between the clientdevice 108 and the new CDN device to deliver the requested resource.

In certain implementations, the client device 108 may be a smart clientthat includes a browser or similar application that downloads aresource, such as a video, in discrete chunks. On failure of aconnection to the resource, the client 108 may re-open the connection tothe resource by reapplying the Happy Eyeballs algorithm or a similarperformance algorithm. In other words, instead of relying on a fallbackresource from which to obtain chunks of the resource, the client device108 could rely on browser behavior to resume a failed or interruptedconnection.

The client 108 may obtain a resource in accordance with a manifest file.A manifest file generally refers to a file including metadata for a setof associated resources. The set of associated resources may correspondto a set of files or may correspond to portions of a larger coherentresource. For example, a manifest file may include metadatacorresponding to discrete portions, such as chunks, of a large videofile or a streaming video feed. In the context of content distribution,manifest files generally include an identifier, such as a hostname,uniform resource locator (URL) (or uniform resource indicator URI), foreach resource identified in the manifest file. Accordingly, a clientdevice may access the manifest file and request each resource, based onthe identifier, in the order specified in the manifest file. Referringagain to the notion of the failure of a connection or session, theclient may reference a manifest to request the next chunk ofinformation, and thereby maintain play or a stream of the content withlittle or no disruption.

In implementations according to the present disclosure, the system maygenerate a manifest file that includes identifiers to multipleresources, but where the resource is available from different networkaddresses. For each of the multiple resources, the manifest file alsoincludes a hostname or similar identifier. For example, the manifestfile may divide a video into 200 discrete resources and associate afirst hostname or similar identifier to the first 100 resources and asecond hostname or identifier to the second 100 resources. Duringoperation, the client device 108 resolves requests for the resourcesaccording to the manifest. However, to improve performance, the clientdevice may execute a Happy Eyeballs algorithm, rendezvous or otherperformance algorithm when a change in hostname occurs. Accordingly,whenever the manifest changes between hostnames, the client device 108reevaluates potential sources for the associated resource and determineswhich of the potential sources would most effectively provide theassociated resource. By doing so, the client device 108 may dynamicallyadapt to changing network conditions, and request and obtain theresource or resources from the optimal network device. The use of twohost names, each providing an equal number of resources is merely anexample of one implementation of the manifest file. In otherimplementations, any distribution of the resources, including unevendistributions, among any suitable number of hostnames or identifiers maybe used.

In certain implementations, the client device 108 may generate and/orstore the manifest file locally. Alternatively, one or more computingdevices of the CDN, such as an edge server, or in communication with theCDN, such as an origin server, may generate and/or host the manifestfile and make the manifest file accessible to the client device 108 uponrequest of the corresponding resource. Manifest files may be static,such as when the manifest file is for a video-on-demand resource, or maybe dynamically updated such as when the manifest file corresponds to alive video stream. In implementations in which a dynamic manifest fileis used, the client device 108 may periodically request an updatedmanifest file from the host computing device.

The following example further illustrates the implementation of amanifest file as described above. During operation, the client device108 obtains a manifest file corresponding to a set of associatedresources. For example, a request for the set of associated resourcesfrom the client device 108 may be sent to a computing device of the CDN102 that hosts the manifest file. In response, the computing device ofthe CDN 102 transmits or otherwise makes the manifest file accessible tothe client device 108. The client device 108 may then proceed to submita resolution request for the first resource of the set of associatedresources as listed in the manifest file. In response, the client device108 is provided with alternative network records for obtaining theresource. The client device 108 may then conduct a performance test toselect the network address from which the client device 108 will requestthe resource, connect with the selected network address, and obtain theresource. The client device 108 may maintain the connection with theselected network address to obtain any subsequent resources included inthe manifest file associated with the same hostname or identifier.However, when the client device 108 reaches a second resource in themanifest file that has a different hostname or identifier, the clientdevice 108 may conduct a second performance test to select a secondnetwork address from which the client device 108 will request the secondresource, connect with the selected second network address, and obtainthe second resource.

FIG. 2 is a flowchart illustrating a method 200, or combination ofmethods, including various operations that may be performed by one ormore computing systems, such as shown in FIG. 3. In particular, FIG. 2illustrates a combination of methods for serving content in a dual stackprotocol network. With reference to FIG. 1, the method 200 isillustrated as being divided based on functions performed by deviceswithin the network. More specifically, box 202 includes functions andprocesses pertaining to a name server and corresponding CDN, such as thedirectory server 110 and the CDN 102 shown in FIG. 1. Box 204corresponds to functions and processes pertaining to a client device,such as the client device 108 of FIG. 1. Finally, boxes 206 and 208correspond to functions and processes pertaining to systems included inthe CDN 102, such as the first CDN device 104 and the second CDN device106 of FIG. 1.

Referring first to box 202, a resource is added to the CDN 102 and, morespecifically, to multiple addresses within the CDN 102 (operation 210),such as a first address corresponding to the first CDN device 104 and asecond address corresponding to the second CDN device 106. In responseto a new resource being added to the CDN 102, records corresponding tothe first address (operation 212) and the second address (operation 214)are each stored within the name/directory server 110. In certainimplementations, the records may be pushed out to DNS infrastructure,which may include CDN name servers as well as other name servers. Aspreviously discussed herein, the first address and the second addresscan correspond to devices having differences in one or more of physicallocation, logical location, communication protocol (e.g., IPv4 versusIPv6), and other characteristics.

Referring now to box 204, corresponding to the client device 108, aresolution request for the resource is submitted by the client device108 to the name/directory server 110 (operation 216). In certainimplementations, the resolution request from the client device 108 isprocessed with a resolver, which communicates with the name/directoryserver 110, which may involve more than one server, to resolve theresource request. The request is received by the name/directory server110 (operation 281) and the corresponding first and second addresses arereturned by the name/directory server 110 to the client device 108(operation 220). In some instances, the name/directory server 110returns one or more Virtual Internet Protocol (VIP) addresses. In suchcases the first CDN device 104 may correspond to multiple machinesassociated with the first address and the second CDN device 106 maycorrespond to multiple machines associated with the same second address.

Upon receiving the first and second addresses (operation 222), theclient device 108 obtains performance data corresponding to the firstand second addresses. In the embodiment illustrated in method 200, theclient device 108 sends a performance request to the first address(operation 224) and to the second address (operation 230). In general,the performance request corresponds to a message or data that can beused to assess performance of a CDN device from which the requestedresource may be retrieved, including performance of the interveningnetwork as measured using network latency, congestion, or any similarnetwork performance metric.

For example, in the embodiment of FIG. 2 and as discussed below,performance may be assessed using a “pinging” or similar operation inwhich network performance is based on round-trip time for a performancerequest sent to each of the first CDN device 104 and the second CDNdevice 106. In a pinging operation, a utility of the requesting device,such as client device 108, generates an echo request packet, such as anInternet Control Message Protocol (ICMP) Echo Request, and transmits theecho request packet to a target host. After transmitting the echorequest, the requesting device waits for a corresponding echo replypacket, such as an ICMP Echo reply packet, and calculates the elapsedtime between transmitting the echo request packet and receiving the echoreply packet. The resulting time corresponds to a round-trip time fordata to travel between the requesting device and the target host,thereby providing an indication of network performance and connectivitybetween the two devices. Multiple requests may be executed and one ormore of the best, worst, average, and standard deviation round-trip timemay be used in evaluating network performance. To gain further insightinto the network performance additional parameters including, withoutlimitation, the payload size, request frequency, and limits on thenumber of network hops that the request may make can also be limited.

In an alternative embodiment, the performance test is performed bysending a connection request to each of the first CDN device 104 and thesecond CDN device 106 using IPv4 and IPv6 protocols, respectively. Theconnect requests may be sent to each device simultaneously or may befirst sent to the device corresponding to the device corresponding to apreferred protocol. In either case, the device to respond first is thenused to carry out the request while any subsequent responses receivedfrom the other device are discarded.

In light of the foregoing and with reference to boxes 206 and 208(corresponding to the first CDN device 104 and the second CDN device106, respectively), the first CDN device 104 and the second CDN device106 receive performance request messages, such as ICMP Echo Requests,from the client device 108 (operations 226 and 232). In response, thefirst CDN device 104 and the second CDN device 106 generate performanceresponse messages, such as ICMP Echo Replies, and transmit the responsemessages back to the client device 108 (operations 228 and 234). Inalternative embodiments, the performance test conducted by the clientdevice 108 may be based on an exchange of connection requests andresponses. More particularly, the performance request messages sent bythe client device 108 to each of the first CDN device 104 and the secondCDN device 106 may be connection requests. In response, to receiving theconnection request, the first CDN device 104 and the second CDN device106 provide performance responses in the form of connection requestresponses.

Upon receiving the performance response messages (operation 236), theclient device 108 compares performance data corresponding to theperformance requests (operation 238) and sends a resource request to oneof the first CDN device 104 and the second CDN device 106 based on theoutcome of the performance data comparison (operation 240). For example,in implementations in which a pinging approach is used, the clientdevice 108 may compare round trip times associated with each requestsent to the first CDN device 104 and the second CDN device 106. In otherimplementations in which a connection request approach is used, theclient device 108 may compare the performance data simply by determininga first-received connection response message. The client device 108 maythen discard any subsequently received response messages.

Referring to FIG. 3, a detailed description of an example computingsystem 300 having one or more computing units that may implement varioussystems and methods discussed herein is provided. It will be appreciatedthat specific implementations of these devices may be of differingpossible specific computing architectures not all of which arespecifically discussed herein but will be understood by those ofordinary skill in the art.

The computer system 300 may be a computing system capable of executing acomputer program product to execute a computer process. Data and programfiles may be input to the computer system 300, which reads the files andexecutes the programs therein. Some of the elements of the computersystem 300 are shown in FIG. 3, including one or more hardwareprocessors 302, one or more data storage devices 304, one or more memorydevices 308, and/or one or more ports 308-312. Additionally, otherelements that will be recognized by those skilled in the art may beincluded in the computing system 300 but are not explicitly depicted inFIG. 3 or discussed further herein. Various elements of the computersystem 300 may communicate with one another by way of one or morecommunication buses, point-to-point communication paths, or othercommunication means not explicitly depicted in FIG. 3.

The processor 302 may include, for example, a central processing unit(CPU), a microprocessor, a microcontroller, a digital signal processor(DSP), and/or one or more internal levels of cache. There may be one ormore processors 302, such that the processor 302 comprises a singlecentral-processing unit, or a plurality of processing units capable ofexecuting instructions and performing operations in parallel with eachother, commonly referred to as a parallel processing environment.

The computer system 300 may be a conventional computer, a distributedcomputer, or any other type of computer, such as one or more externalcomputers made available via a cloud computing architecture. Thepresently described technology is optionally implemented in softwarestored on the data stored device(s) 304, stored on the memory device(s)306, and/or communicated via one or more of the ports 308-312, therebytransforming the computer system 300 in FIG. 3 to a special purposemachine for implementing the operations described herein. Examples ofthe computer system 300 include personal computers, terminals,workstations, mobile phones, tablets, laptops, personal computers,multimedia consoles, gaming consoles, set top boxes, and the like.

The one or more data storage devices 304 may include any non-volatiledata storage device capable of storing data generated or employed withinthe computing system 300, such as computer executable instructions forperforming a computer process, which may include instructions of bothapplication programs and an operating system (OS) that manages thevarious components of the computing system 300. The data storage devices304 may include, without limitation, magnetic disk drives, optical diskdrives, solid state drives (SSDs), flash drives, and the like. The datastorage devices 304 may include removable data storage media,non-removable data storage media, and/or external storage devices madeavailable via a wired or wireless network architecture with suchcomputer program products, including one or more database managementproducts, web server products, application server products, and/or otheradditional software components. Examples of removable data storage mediainclude Compact Disc Read-Only Memory (CD-ROM), Digital Versatile DiscRead-Only Memory (DVD-ROM), magneto-optical disks, flash drives, and thelike. Examples of non-removable data storage media include internalmagnetic hard disks, SSDs, and the like. The one or more memory devices306 may include volatile memory (e.g., dynamic random access memory(DRAM), static random access memory (SRAM), etc.) and/or non-volatilememory (e.g., read-only memory (ROM), flash memory, etc.).

Computer program products containing mechanisms to effectuate thesystems and methods in accordance with the presently describedtechnology may reside in the data storage devices 304 and/or the memorydevices 306, which may be referred to as machine-readable media. It willbe appreciated that machine-readable media may include any tangiblenon-transitory medium that is capable of storing or encodinginstructions to perform any one or more of the operations of the presentdisclosure for execution by a machine or that is capable of storing orencoding data structures and/or modules utilized by or associated withsuch instructions. Machine-readable media may include a single medium ormultiple media (e.g., a centralized or distributed database, and/orassociated caches and servers) that store the one or more executableinstructions or data structures.

In some implementations, the computer system 300 includes one or moreports, such as an input/output (I/O) port 308, a communication port 310,and a sub-systems port 312, for communicating with other computing,network, or vehicle devices. It will be appreciated that the ports308-312 may be combined or separate and that more or fewer ports may beincluded in the computer system 300.

The I/O port 308 may be connected to an I/O device, or other device, bywhich information is input to or output from the computing system 300.Such I/O devices may include, without limitation, one or more inputdevices, output devices, and/or environment transducer devices.

In one implementation, the input devices convert a human-generatedsignal, such as, human voice, physical movement, physical touch orpressure, and/or the like, into electrical signals as input data intothe computing system 300 via the I/O port 308. Similarly, the outputdevices may convert electrical signals received from computing system300 via the I/O port 308 into signals that may be sensed as output by ahuman, such as sound, light, and/or touch. The input device may be analphanumeric input device, including alphanumeric and other keys forcommunicating information and/or command selections to the processor 302via the I/O port 308. The input device may be another type of user inputdevice including, but not limited to: direction and selection controldevices, such as a mouse, a trackball, cursor direction keys, ajoystick, and/or a wheel; one or more sensors, such as a camera, amicrophone, a positional sensor, an orientation sensor, a gravitationalsensor, an inertial sensor, and/or an accelerometer; and/or atouch-sensitive display screen (“touchscreen”). The output devices mayinclude, without limitation, a display, a touchscreen, a speaker, atactile and/or haptic output device, and/or the like. In someimplementations, the input device and the output device may be the samedevice, for example, in the case of a touchscreen.

The environment transducer devices convert one form of energy or signalinto another for input into or output from the computing system 300 viathe I/O port 308. For example, an electrical signal generated within thecomputing system 300 may be converted to another type of signal, and/orvice-versa. In one implementation, the environment transducer devicessense characteristics or aspects of an environment local to or remotefrom the computing device 300, such as, light, sound, temperature,pressure, magnetic field, electric field, chemical properties, physicalmovement, orientation, acceleration, gravity, and/or the like. Further,the environment transducer devices may generate signals to impose someeffect on the environment either local to or remote from the examplecomputing device 300, such as, physical movement of some object (e.g., amechanical actuator), heating or cooling of a substance, adding achemical substance, and/or the like.

In one implementation, a communication port 310 is connected to anetwork by way of which the computer system 300 may receive network datauseful in executing the methods and systems set out herein as well astransmitting information and network configuration changes determinedthereby. Stated differently, the communication port 310 connects thecomputer system 300 to one or more communication interface devicesconfigured to transmit and/or receive information between the computingsystem 300 and other devices by way of one or more wired or wirelesscommunication networks or connections. Examples of such networks orconnections include, without limitation, Universal Serial Bus (USB),Ethernet, Wi-Fi, Bluetooth®, Near Field Communication (NFC), Long-TermEvolution (LTE), and so on. One or more such communication interfacedevices may be utilized via the communication port 310 to communicateone or more other machines, either directly over a point-to-pointcommunication path, over a wide area network (WAN) (e.g., the Internet),over a local area network (LAN), over a cellular (e.g., third generation(3G) or fourth generation (4G)) network, or over another communicationmeans. Further, the communication port 310 may communicate with anantenna for electromagnetic signal transmission and/or reception.

The computer system 300 may include a sub-systems port 312 forcommunicating with one or more systems related to a vehicle to controlan operation of the vehicle and/or exchange information between thecomputer system 300 and one or more sub-systems of the vehicle. Examplesof such sub-systems of a vehicle, include, without limitation, imagingsystems, radar, lidar, motor controllers and systems, battery control,fuel cell or other energy storage systems or controls in the case ofsuch vehicles with hybrid or electric motor systems, autonomous orsemi-autonomous processors and controllers, steering systems, brakesystems, light systems, navigation systems, environment controls,entertainment systems, and the like.

The system set forth in FIG. 2 is but one possible example of a computersystem that may employ or be configured in accordance with aspects ofthe present disclosure. It will be appreciated that other non-transitorytangible computer-readable storage media storing computer-executableinstructions for implementing the presently disclosed technology on acomputing system may be utilized.

In the present disclosure, the methods disclosed may be implemented assets of instructions or software readable by a device. Further, it isunderstood that the specific order or hierarchy of steps in the methodsdisclosed are instances of example approaches. Based upon designpreferences, it is understood that the specific order or hierarchy ofsteps in the method can be rearranged while remaining within thedisclosed subject matter. The accompanying method claims presentelements of the various steps in a sample order, and are not necessarilymeant to be limited to the specific order or hierarchy presented.

The described disclosure may be provided as a computer program product,or software, that may include a non-transitory machine-readable mediumhaving stored thereon instructions, which may be used to program acomputer system (or other electronic devices) to perform a processaccording to the present disclosure. A machine-readable medium includesany mechanism for storing information in a form (e.g., software,processing application) readable by a machine (e.g., a computer). Themachine-readable medium may include, but is not limited to, magneticstorage medium, optical storage medium; magneto-optical storage medium,read only memory (ROM); random access memory (RAM); erasableprogrammable memory (e.g., EPROM and EEPROM); flash memory; or othertypes of medium suitable for storing electronic instructions.

While the present disclosure has been described with reference tovarious implementations, it will be understood that theseimplementations are illustrative and that the scope of the presentdisclosure is not limited to them. Many variations, modifications,additions, and improvements are possible. More generally, embodiments inaccordance with the present disclosure have been described in thecontext of particular implementations. Functionality may be separated orcombined in blocks differently in various embodiments of the disclosureor described with different terminology. These and other variations,modifications, additions, and improvements may fall within the scope ofthe disclosure as defined in the claims that follow.

It should be understood from the foregoing that, while particularembodiments have been illustrated and described, various modificationscan be made thereto without departing from the spirit and scope of theinvention as will be apparent to those skilled in the art. Such changesand modifications are within the scope and teachings of this inventionas defined in the claims appended thereto.

What is claimed is:
 1. A method of serving content comprising: inrelationship to a dual protocol network stack environment, maintaining afirst address record associated with serving a resource, the firstaddress record associated with a first protocol for a first devicecapable of serving the resource; maintaining a second address recordassociated with serving the resource, the second address recordassociated with a second protocol, different from the first protocol,for a second device, distinct from the first device, capable of servingthe resource; and in response to at least one resolution request for theresource, providing the first address record and the second addressrecord.
 2. The method of claim 1, wherein the first protocol is InternetProtocol version 4 (IPv4) and the second protocol is Internet Protocolversion 6 (IPv6).
 3. The method of claim 1, wherein the first addressrecord is an A record and the second address record is an AAAA record.4. The method of claim 1, wherein the first address record and thesecond address record is associated with a first content delivery serverand a second content delivery server, respectively, of a contentdelivery network.
 5. The method of claim 1, wherein the first addressrecord and the second address record are provided to a client device,the client device configured to execute a performance test in responseto receiving the first address record and the second address record toassess the performance of obtaining the resource from the first deviceusing the first address record and the performance of obtaining theresource from the second device using the second address record.
 6. Themethod of claim 5, wherein the performance test includes executing aHappy Eyeballs function.
 7. The method of claim 1, wherein at least oneof the first address record and the second address record correspond toa virtual internet protocol address.
 8. A method of obtaining contentcomprising: in response to a resolution request for a resource,obtaining a first network record associated with a first protocol, thefirst network record for a first device capable of serving the resource;obtaining a second network record associated with a second protocoldistinct from the first protocol, the second network record for a seconddevice capable of serving the resource; obtaining performanceinformation pertaining to a performance of obtaining the resource fromthe first device and a performance of obtaining the resource from thesecond device; and requesting the resource from the first device usingthe first protocol or the second device using the second protocol basedon the performance information.
 9. The method of obtaining content ofclaim 8, wherein the first protocol is Internet Protocol version 4(IPv4) and the second protocol is Internet Protocol version 6 (IPv6).10. The method of obtaining content of claim 8, wherein the firstnetwork record is an A record and the second network is an AAAA record.11. The method of obtaining content of claim 8, wherein obtaining theperformance information comprises executing a Happy Eyeballs function.12. The method of obtaining content of claim 8, wherein the performanceinformation includes at least one of a cost of performance, logicalproximity, physical proximity, bandwidth, contract parameters, andnetwork load.
 13. The method of obtaining content of claim 8, whereinthe first device is in a different physical location from the seconddevice.
 14. The method of obtaining content of claim 8, wherein one ofthe first device and the second device is designated as a defaultdevice, the method further comprising: determining a difference betweenthe performance of obtaining the resource from the first device and theperformance of obtaining the resource from the second device is within apredetermined threshold; and requesting the resource from the defaultdevice.
 15. The method of obtaining content of claim 8 furthercomprising: initiating a communication session with a first one of thefirst device and the second device; identifying an occurrence of atleast one of an interruption of the communication session and areduction in performance of the communication session; and requestingthe resource from a second one of the first device using the firstprotocol and the second device using the second protocol.
 16. The methodof obtaining content of claim 8 further comprising: initiating acommunication session with a first one of the first device and thesecond device; identifying an occurrence of one of at least one of aninterruption of the communication session and a reduction in performanceof the first communication session; obtaining additional performanceinformation after identifying the occurrence, the additional performanceinformation pertaining to a performance of obtaining the resource fromthe first device and a performance of obtaining the resource from thesecond device; and requesting the resource from the first device usingthe first protocol or the second device using the second protocol basedon the additional performance information.
 17. The method of obtainingcontent of claim 8, wherein the resource is a first resource of a set ofassociated resources, the method further comprising: obtaining amanifest file including a first identifier associated with the firstresource and a second identifier associated with a second resource ofthe set of associated resources, the first identifier different from thesecond identifier and the first resource different from the secondresource, wherein the resolution request includes the first identifier.18. The method of obtaining content of claim 17, further comprising:obtaining a third network record associated with the first protocol, thethird network record for a third device capable of serving the secondresource; obtaining a fourth network record associated with the secondprotocol, the fourth network record for a fourth device capable ofserving the second resource; obtaining performance informationpertaining to a performance of obtaining the second resource from thethird device and a performance of obtaining the resource from the fourthdevice; and requesting the resource from the third device using thefirst protocol or the fourth device using the second protocol based onthe performance information, wherein obtaining the third network recordand the fourth network record comprises submitting a second resolutionrequest including the second identifier.
 19. A system for providingcontent comprising: a directory server in relationship to a dualprotocol network stack environment, the directory server configured to:maintain a first address record associated with serving a resource, thefirst address record associated with a first protocol for a first devicecapable of serving the resource; maintain a second address recordassociated with serving the resource, the second address recordassociated with a second protocol, different from the first protocol,for a second device, distinct from the first device, capable of servingthe resource; and in response to at least one resolution request for theresource, provide the first address record and the second addressrecord.
 20. The system of claim 19, wherein the first protocol isInternet Protocol version 4 (IPv4) and the second protocol is InternetProtocol version 6 (IPv6).
 21. The system of claim 19, wherein the firstaddress record and the second address record are provided to a clientdevice, the client device configured to execute a performance test inresponse to receiving the first address record and the second addressrecord to assess the performance of obtaining the resource from thefirst device using the first address record and the performance ofobtaining the resource from the second device using the second addressrecord.
 22. The system of claim 21, wherein the performance testincludes executing a Happy Eyeballs function.
 23. The system of claim19, wherein the directory server is configured to identify the firstaddress and the second address based, at least in part, on one or morecharacteristics of a device associated with the resolution request. 24.The system of claim 23, wherein: the device associated with theresolution request is one of a client device from which the resolutionrequest originates and an intermediate device through which theresolution request is communicated to the directory server; and the oneor more characteristics include at least one of a location of the deviceassociated with the resolution request, information pertaining to anentity deploying the device associated with the resolution request, andinformation pertaining to other devices in communication with the deviceassociated with the resolution request.
 25. A method of serving contentcomprising: generating a manifest file including a first identifierassociated with a first resource of a set of associated resources and asecond identifier associated with a second resource of the set ofassociated resources, the first identifier different from the secondidentifier and the first resource different from the second resource;providing the manifest file in response to a request for the set ofassociated resources; receiving a first resolution request for the firstresource, the resolution request including the first identifier;resolving the first resolution request to a first device; receiving asecond resolution request for the second resource, the second resolutionrequest including the second identifier; and resolving the secondresolution request to a second device different from the first device.26. The method of serving content of claim 25, further comprising:maintaining a first address record associated with serving the firstresource, the first address record associated with the first device;maintaining a second address record associated with serving the firstresource, the second address record associated with a third devicecapable of serving the first resource; and in response to the firstresolution request, providing each of the first address record and thesecond address record.
 27. The method of serving content of claim 25,wherein the first identifier includes a first hostname and the secondidentifier includes a second hostname different from the first hostname.